<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Document</title>
	</head>
	<body>
		<script type="text/javascript">
			//使用var与使用let定义变量的区别
			//1.let不允许在相同的作用域内，重复声明一个变量
			//var x=10;
			//console.log(x);
			//{
			//	var=8;
			//	console.log(x);
			//}
			//console.log(x);
			
			//console.log(y);
			//{
			//	let y=3;
			//	console.log(y);
			//}
			//console.log(y)
			
			// 2.使用let命令在同一个作用域内,只能声明同一个变量.
			// function func () {
			// 	let i=4;
			// 	var i=1;		//报错
			// }
			// func();
			
			// 3.var命令有声明提升,let命令没有声明提升.
			// console.log(x);
			// var num=10;
			
			//块级作用域
			//内层变量覆盖外层变量
			// var a=100;
			// function f(){
			// 	console.log(a);
			// 	if(false){
			// 		var a='ni hao'; 
			// 	}
			// }
			// f()		//undefined
			
			//计数的循环变量泄露为全局变量
			// var str='welcome';
			// for(var i=0;i<str.length'i++)
			// {
			// 	console.log(str[i]);
			// }
			// console.log(i);	//7
			
			//let为js新增了块级作用域
			function func(){
				let n='a';
				if(true){
					let n='b';
				}
				console.log(n);
			}
			func();		//a
		</script>
	</body>
</html>